//
//  KMNetworkClient.h
//  CashLoans
//
//  Created by KM on 2017/12/14.
//  Copyright © 2017年 KM. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "KMNetworkHelper.h"
@interface KMNetworkClient : NSObject


/**
 GET请求 无缓存

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)GET:(NSString *)URL
       parameters:(id)parameters;

/**
 XDGET请求 无缓存

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)XDGET:(NSString *)URL
         parameters:(id)parameters;

/**
 fir.im 更新GET

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)firm_GET:(NSString *)URL
            parameters:(id)parameters;

/**
 GET请求 带缓存

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)GETWithCatch:(NSString *)URL
       parameters:(id)parameters;

/**
 POST请求 无缓存

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)POST:(NSString *)URL
       parameters:(id)parameters;

/**
 POST请求 带缓存

 @param URL 请求地址
 @param parameters 请求参数
 @return 信号
 */
+(RACSignal *)POSTWithCatch:(NSString *)URL
                parameters:(id)parameters;


/**
 上传单/多张图片

 *  @param URL        请求地址
 *  @param parameters 请求参数
 *  @param name       图片对应服务器上的字段
 *  @param images     图片数组
 *  @param fileNames  图片文件名数组, 可以为nil, 数组内的文件名默认为当前日期时间"yyyyMMddHHmmss"
 *  @param imageScale 图片文件压缩比 范围 (0.f ~ 1.f)
 *  @param imageType  图片文件的类型,例:png、jpg(默认类型)....
 @return 信号
 */
+(RACSignal *)uploadImageWithURL:(NSString *)URL
                      parameters:(id)parameters
                            name:(NSString *)name
                          images:(NSArray<UIImage *> *)images
                       fileNames:(NSArray<NSString *> *)fileNames
                      imageScale:(CGFloat)imageScale
                       imageType:(NSString *)imageType;

/**
 上传文件

 @param URL 请求地址
 @param parameters 请求参数
 @param name 文件对应服务器上的字段
 @param filePath 文件本地的沙盒路径
 @return 信号
 */
+(RACSignal *)uploadFileWithURL:(NSString *)URL
                     parameters:(id)parameters
                           name:(NSString *)name
                       filePath:(NSString *)filePath;

/**
 上传文件
 
 @param URL 请求地址
 @param parameters 请求参数
 @param name 文件对应服务器上的字段
 @param fileData 文件数据
 @return 信号
 */
+(RACSignal *)uploadFileWithURL:(NSString *)URL
                     parameters:(id)parameters
                           name:(NSString *)name
                       fileData:(NSData *)fileData;

@end
